#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn=1e6+9;
const int INF=1e18;
string s,t;
int n,m;
int pre[maxn];
int dp[maxn],f[maxn];
signed main()
{
	freopen("neck.in","r",stdin);
	freopen("neck.out","w",stdout);
	ios::sync_with_stdio(false);
	cin.tie(0),cout.tie(0);
	cin>>s>>t;
	n=s.size(),m=t.size();
	if(m>n) {cout<<0<<'\n';return 0;}
	for(int i=1;i<m;i++)
	{
		int j=pre[i-1];
		while(j>0&&t[i]!=t[j]) j=pre[j-1];
		if(t[i]==t[j]) j++;
		pre[i]=j;
	}
	for(int i=0;i<n;i++) dp[i]=f[i]=INF;
	dp[0]=0;
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++) f[j]=INF;
		for(int j=0;j<m;j++)
		{
			if(dp[j]==INF) continue;
			f[j]=min(f[j],dp[j]+1);
			int k=j;
			while(k>0&&s[i]!=t[k]) k=pre[k-1];
			if(s[i]==t[k]) k++;
			if(k<m)
			{
				f[k]=min(f[k],dp[j]);
			}
		}
		for(int j=0;j<m;j++) swap(f[j],dp[j]);
	}
	int ans=INF;
	for(int j=0;j<m;j++) ans=min(ans,dp[j]);
	cout<<n-ans<<'\n';
	return 0;
}
